package com.project.service;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.baomidou.mybatisplus.extension.service.IService;
import com.project.dto.ProjectDto;
import com.project.dto.ProjectFinish;
import com.project.dto.ProjectInfo;
import com.project.dto.ProjectPartDto;
import com.project.dtoplus.AnnexPlus;
import com.project.dtoplus.ProPartPlus;
import com.project.dtoplus.ProjectDetailPlus;
import com.project.entity.Accessory;
import com.project.entity.LogCount;
import com.project.entity.Logs;
import com.project.entity.Project;
import org.springframework.web.multipart.MultipartFile;

import java.io.IOException;
import java.util.List;

public interface ProjectService extends IService<Project> {
    //1.
    public void apply(ProjectDto projectDto);

    public List<AnnexPlus> addBeginAccessory(MultipartFile[] files, int type) throws IOException;

    //2.
    public void addAccessory( List<AnnexPlus> annexPluses,Long projectId,int type) throws IOException;

    public ProjectDetailPlus detail(Long projectId);

    public void auditPro (Logs logs,int status);

    public Page establishment (int page, int pageSize,String name);

    public ProjectInfo msgInfo(int status, Long projectId);

    public void auditLogs(LogCount logCount);

    //项目进展
    public Page logCount(int page,int pageSize,String name);

    public Page pageMid(int page,int pageSize,String name);

    public void changeMember(Long projectId,String[] userIds,String[] works);

    public Page pageFinish(int page,int pageSize,String name);

    public void addExtension(String extensionMsg,Long projectId,int type) throws IOException;

    public ProPartPlus toClose(Long projectId);

    public void finishAnnex(ProjectFinish projectFinish);

    //老师接口
    public Page teacherBeginPage(int page,int pageSize,String name);

    public Page teacherMidPage(int page,int pageSize,String name);

    public Page teacherEndPage(int page,int pageSize,String name);


    public Page teacherExtension(int page,int pageSize,String name);

    public void change(Long projectId,int status);

    public void changeLogCount(Long projectId,int count);

    public ProPartPlus getEndConcise(ProjectPartDto projectPartDto);

    public ProjectDetailPlus getDetailPlus(ProjectPartDto projectPartDto);
}
